/*
 * Copyright 2010-2012 Susanta Tewari. <freecode4susant@users.sourceforge.net>
 *
 * This program is a derivative work from the original sources at
 * Apache Commons (http://commons.apache.org/).
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.apache.commons.lang.builder;

/**
 * <p>Works with {@link ToStringBuilder} to create a <code>toString</code>.</p>
 * <p>This class is intended to be used as a singleton.
 * There is no need to instantiate a new style each time.
 * Simply instantiate the class once, customize the values as required, and
 * store the result in a public static final variable for the rest of the
 * program to access.</p>
 *
 * @version $Id: StandardToStringStyle.java 1089740 2011-04-07 05:01:54Z bayard $
 * @since 1.0
 */
public class StandardToStringStyle extends ToStringStyle {

    /**
     * Required for serialization support.
     *
     * @see java.io.Serializable
     */
    private static final long serialVersionUID = 1L;

    /**
     * <p>Constructor.</p>
     */
    public StandardToStringStyle() {

        super();
    }

    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether to use the class name.</p>
     *
     * @return the current useClassName flag
     */
    @Override
    public boolean isUseClassName() {    // NOPMD as this is implementing the abstract class
        return super.isUseClassName();
    }


    /**
     * <p>Sets whether to use the class name.</p>
     *
     * @param useClassName the new useClassName flag
     */
    @Override
    public void setUseClassName(boolean useClassName) {    // NOPMD as this is implementing the abstract class
        super.setUseClassName(useClassName);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether to output short or long class names.</p>
     *
     * @return the current useShortClassName flag
     * @since 2.0
     */
    @Override
    public boolean isUseShortClassName() {    // NOPMD as this is implementing the abstract class
        return super.isUseShortClassName();
    }


    /**
     * <p>Sets whether to output short or long class names.</p>
     *
     * @param useShortClassName the new useShortClassName flag
     * @since 2.0
     */
    @Override
    public void setUseShortClassName(boolean useShortClassName) {    // NOPMD as this is implementing the abstract class
        super.setUseShortClassName(useShortClassName);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether to use the identity hash code.</p>
     *
     * @return the current useIdentityHashCode flag
     */
    @Override
    public boolean isUseIdentityHashCode() {    // NOPMD as this is implementing the abstract class
        return super.isUseIdentityHashCode();
    }


    /**
     * <p>Sets whether to use the identity hash code.</p>
     *
     * @param useIdentityHashCode the new useIdentityHashCode flag
     */
    @Override
    public void setUseIdentityHashCode(boolean useIdentityHashCode) {    // NOPMD as this is implementing the abstract class
        super.setUseIdentityHashCode(useIdentityHashCode);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether to use the field names passed in.</p>
     *
     * @return the current useFieldNames flag
     */
    @Override
    public boolean isUseFieldNames() {    // NOPMD as this is implementing the abstract class
        return super.isUseFieldNames();
    }


    /**
     * <p>Sets whether to use the field names passed in.</p>
     *
     * @param useFieldNames the new useFieldNames flag
     */
    @Override
    public void setUseFieldNames(boolean useFieldNames) {    // NOPMD as this is implementing the abstract class
        super.setUseFieldNames(useFieldNames);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether to use full detail when the caller doesn't
     * specify.</p>
     *
     * @return the current defaultFullDetail flag
     */
    @Override
    public boolean isDefaultFullDetail() {    // NOPMD as this is implementing the abstract class
        return super.isDefaultFullDetail();
    }


    /**
     * <p>Sets whether to use full detail when the caller doesn't
     * specify.</p>
     *
     * @param defaultFullDetail the new defaultFullDetail flag
     */
    @Override
    public void setDefaultFullDetail(boolean defaultFullDetail) {    // NOPMD as this is implementing the abstract class
        super.setDefaultFullDetail(defaultFullDetail);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether to output array content detail.</p>
     *
     * @return the current array content detail setting
     */
    @Override
    public boolean isArrayContentDetail() {    // NOPMD as this is implementing the abstract class
        return super.isArrayContentDetail();
    }


    /**
     * <p>Sets whether to output array content detail.</p>
     *
     * @param arrayContentDetail the new arrayContentDetail flag
     */
    @Override
    public void setArrayContentDetail(boolean arrayContentDetail) {    // NOPMD as this is implementing the abstract class
        super.setArrayContentDetail(arrayContentDetail);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the array start text.</p>
     *
     * @return the current array start text
     */
    @Override
    public String getArrayStart() {    // NOPMD as this is implementing the abstract class
        return super.getArrayStart();
    }


    /**
     * <p>Sets the array start text.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param arrayStart the new array start text
     */
    @Override
    public void setArrayStart(String arrayStart) {    // NOPMD as this is implementing the abstract class
        super.setArrayStart(arrayStart);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the array end text.</p>
     *
     * @return the current array end text
     */
    @Override
    public String getArrayEnd() {    // NOPMD as this is implementing the abstract class
        return super.getArrayEnd();
    }


    /**
     * <p>Sets the array end text.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param arrayEnd the new array end text
     */
    @Override
    public void setArrayEnd(String arrayEnd) {    // NOPMD as this is implementing the abstract class
        super.setArrayEnd(arrayEnd);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the array separator text.</p>
     *
     * @return the current array separator text
     */
    @Override
    public String getArraySeparator() {    // NOPMD as this is implementing the abstract class
        return super.getArraySeparator();
    }


    /**
     * <p>Sets the array separator text.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param arraySeparator the new array separator text
     */
    @Override
    public void setArraySeparator(String arraySeparator) {    // NOPMD as this is implementing the abstract class
        super.setArraySeparator(arraySeparator);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the content start text.</p>
     *
     * @return the current content start text
     */
    @Override
    public String getContentStart() {    // NOPMD as this is implementing the abstract class
        return super.getContentStart();
    }


    /**
     * <p>Sets the content start text.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param contentStart the new content start text
     */
    @Override
    public void setContentStart(String contentStart) {    // NOPMD as this is implementing the abstract class
        super.setContentStart(contentStart);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the content end text.</p>
     *
     * @return the current content end text
     */
    @Override
    public String getContentEnd() {    // NOPMD as this is implementing the abstract class
        return super.getContentEnd();
    }


    /**
     * <p>Sets the content end text.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param contentEnd the new content end text
     */
    @Override
    public void setContentEnd(String contentEnd) {    // NOPMD as this is implementing the abstract class
        super.setContentEnd(contentEnd);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the field name value separator text.</p>
     *
     * @return the current field name value separator text
     */
    @Override
    public String getFieldNameValueSeparator() {    // NOPMD as this is implementing the abstract class
        return super.getFieldNameValueSeparator();
    }


    /**
     * <p>Sets the field name value separator text.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param fieldNameValueSeparator the new field name value separator text
     */
    @Override
    public void setFieldNameValueSeparator(String fieldNameValueSeparator) {    // NOPMD as this is implementing the abstract class
        super.setFieldNameValueSeparator(fieldNameValueSeparator);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the field separator text.</p>
     *
     * @return the current field separator text
     */
    @Override
    public String getFieldSeparator() {    // NOPMD as this is implementing the abstract class
        return super.getFieldSeparator();
    }


    /**
     * <p>Sets the field separator text.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param fieldSeparator the new field separator text
     */
    @Override
    public void setFieldSeparator(String fieldSeparator) {    // NOPMD as this is implementing the abstract class
        super.setFieldSeparator(fieldSeparator);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether the field separator should be added at the start
     * of each buffer.</p>
     *
     * @return the fieldSeparatorAtStart flag
     * @since 2.0
     */
    @Override
    public boolean isFieldSeparatorAtStart() {    // NOPMD as this is implementing the abstract class
        return super.isFieldSeparatorAtStart();
    }


    /**
     * <p>Sets whether the field separator should be added at the start
     * of each buffer.</p>
     *
     * @param fieldSeparatorAtStart the fieldSeparatorAtStart flag
     * @since 2.0
     */
    @Override
    public void setFieldSeparatorAtStart(boolean fieldSeparatorAtStart) {    // NOPMD as this is implementing the abstract class
        super.setFieldSeparatorAtStart(fieldSeparatorAtStart);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets whether the field separator should be added at the end
     * of each buffer.</p>
     *
     * @return fieldSeparatorAtEnd flag
     * @since 2.0
     */
    @Override
    public boolean isFieldSeparatorAtEnd() {    // NOPMD as this is implementing the abstract class
        return super.isFieldSeparatorAtEnd();
    }


    /**
     * <p>Sets whether the field separator should be added at the end
     * of each buffer.</p>
     *
     * @param fieldSeparatorAtEnd the fieldSeparatorAtEnd flag
     * @since 2.0
     */
    @Override
    public void setFieldSeparatorAtEnd(boolean fieldSeparatorAtEnd) {    // NOPMD as this is implementing the abstract class
        super.setFieldSeparatorAtEnd(fieldSeparatorAtEnd);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the text to output when <code>null</code> found.</p>
     *
     * @return the current text to output when <code>null</code> found
     */
    @Override
    public String getNullText() {    // NOPMD as this is implementing the abstract class
        return super.getNullText();
    }


    /**
     * <p>Sets the text to output when <code>null</code> found.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param nullText the new text to output when <code>null</code> found
     */
    @Override
    public void setNullText(String nullText) {    // NOPMD as this is implementing the abstract class
        super.setNullText(nullText);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the text to output when a <code>Collection</code>,
     * <code>Map</code> or <code>Array</code> size is output.</p>
     * <p>This is output before the size value.</p>
     *
     * @return the current start of size text
     */
    @Override
    public String getSizeStartText() {    // NOPMD as this is implementing the abstract class
        return super.getSizeStartText();
    }


    /**
     * <p>Sets the start text to output when a <code>Collection</code>,
     * <code>Map</code> or <code>Array</code> size is output.</p>
     * <p>This is output before the size value.</p>
     * <p><code>null</code> is accepted, but will be converted to
     * an empty String.</p>
     *
     * @param sizeStartText the new start of size text
     */
    @Override
    public void setSizeStartText(String sizeStartText) {    // NOPMD as this is implementing the abstract class
        super.setSizeStartText(sizeStartText);
    }


    // ---------------------------------------------------------------------

    /**
     * Gets the end text to output when a <code>Collection</code>,
     * <code>Map</code> or <code>Array</code> size is output.</p>
     * <p>This is output after the size value.</p>
     *
     * @return the current end of size text
     */
    @Override
    public String getSizeEndText() {    // NOPMD as this is implementing the abstract class
        return super.getSizeEndText();
    }


    /**
     * <p>Sets the end text to output when a <code>Collection</code>,
     * <code>Map</code> or <code>Array</code> size is output.</p>
     * <p>This is output after the size value.</p>
     * <p><code>null</code> is accepted, but will be converted
     * to an empty String.</p>
     *
     * @param sizeEndText the new end of size text
     */
    @Override
    public void setSizeEndText(String sizeEndText) {    // NOPMD as this is implementing the abstract class
        super.setSizeEndText(sizeEndText);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the start text to output when an <code>Object</code> is
     * output in summary mode.</p>
     * <P>This is output before the size value.</p>
     *
     * @return the current start of summary text
     */
    @Override
    public String getSummaryObjectStartText() {    // NOPMD as this is implementing the abstract class
        return super.getSummaryObjectStartText();
    }


    /**
     * <p>Sets the start text to output when an <code>Object</code> is
     * output in summary mode.</p>
     * <p>This is output before the size value.</p>
     * <p><code>null</code> is accepted, but will be converted to
     * an empty String.</p>
     *
     * @param summaryObjectStartText the new start of summary text
     */
    @Override
    public void setSummaryObjectStartText(String summaryObjectStartText) {    // NOPMD as this is implementing the abstract class
        super.setSummaryObjectStartText(summaryObjectStartText);
    }


    // ---------------------------------------------------------------------

    /**
     * <p>Gets the end text to output when an <code>Object</code> is
     * output in summary mode.</p>
     * <p>This is output after the size value.</p>
     *
     * @return the current end of summary text
     */
    @Override
    public String getSummaryObjectEndText() {    // NOPMD as this is implementing the abstract class
        return super.getSummaryObjectEndText();
    }


    /**
     * <p>Sets the end text to output when an <code>Object</code> is
     * output in summary mode.</p>
     * <p>This is output after the size value.</p>
     * <p><code>null</code> is accepted, but will be converted to
     * an empty String.</p>
     *
     * @param summaryObjectEndText the new end of summary text
     */
    @Override
    public void setSummaryObjectEndText(String summaryObjectEndText) {    // NOPMD as this is implementing the abstract class
        super.setSummaryObjectEndText(summaryObjectEndText);
    }

    // ---------------------------------------------------------------------

}
